using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

namespace QldtSdh.DAL.Models.Mapping
{
    public class HocVienMap : EntityTypeConfiguration<HocVien>
    {
        public HocVienMap()
        {
            // Khoá chính
            this.HasKey(t => t.MaHocVien);

            // Các cột
            this.Property(t => t.MaHocVien)
                .IsRequired()
                .HasMaxLength(50);

            this.Property(t => t.HoDem)
                .IsRequired()
                .HasMaxLength(255);

            this.Property(t => t.Ten)
                .IsRequired()
                .HasMaxLength(255);

            this.Property(t => t.NoiSinh)
                .HasMaxLength(255);

            this.Property(t => t.QuocTich)
                .IsRequired()
                .HasMaxLength(255);

            this.Property(t => t.DiaChi)
                .HasMaxLength(255);

            this.Property(t => t.SoDienThoai)
                .HasMaxLength(50);

            this.Property(t => t.Email)
                .HasMaxLength(255);

            this.Property(t => t.LoaiChungChi)
               .HasMaxLength(50);

            this.Property(t => t.NgoaiNgu)
               .HasMaxLength(50);
            this.Property(t => t.NoiCapChungChi)
              .HasMaxLength(100);

            this.Property(t => t.GhiChu).HasMaxLength(255);

            this.Property(t => t.MaLopKhoaNganhGUID)
                .IsRequired()
                .HasMaxLength(50);

            this.Property(t => t.MaDotTuyenSinhGUID)
                .IsRequired()
                .HasMaxLength(50);
            this.Property(t => t.TenLuanVan)
                .HasMaxLength(255);
            this.Property(t => t.HoiDongBaoVe)
                .HasMaxLength(255);
            this.Property(t => t.GiaoVienHuongDan)
                .HasMaxLength(255);

            // Ánh xạ Property của POCO vào Column của Table
            this.ToTable("HocVien");
            this.Property(t => t.MaHocVien).HasColumnName("MaHocVien");
            this.Property(t => t.HoDem).HasColumnName("HoDem");
            this.Property(t => t.Ten).HasColumnName("Ten");
            this.Property(t => t.GioiTinh).HasColumnName("GioiTinh");
            this.Property(t => t.NgaySinh).HasColumnName("NgaySinh");
            this.Property(t => t.NoiSinh).HasColumnName("NoiSinh");
            this.Property(t => t.QuocTich).HasColumnName("QuocTich");
            this.Property(t => t.DiaChi).HasColumnName("DiaChi");
            this.Property(t => t.SoDienThoai).HasColumnName("SoDienThoai");
            this.Property(t => t.Email).HasColumnName("Email");
            this.Property(t => t.LoaiChungChi).HasColumnName("LoaiChungChi");
            this.Property(t => t.NgoaiNgu).HasColumnName("NgoaiNgu");
            this.Property(t => t.NoiCapChungChi).HasColumnName("NoiCapChungChi");
            this.Property(t => t.NgayCapChungChi).HasColumnName("NgayCapChungChi");
            this.Property(t => t.GhiChu).HasColumnName("GhiChu");
            this.Property(t => t.MaLopKhoaNganhGUID).HasColumnName("MaLopKhoaNganhGUID");
            this.Property(t => t.MaDotTuyenSinhGUID).HasColumnName("MaDotTuyenSinhGUID");
            this.Property(t => t.TenLuanVan).HasColumnName("TenLuanVan");
            this.Property(t => t.DiemLuanVan).HasColumnName("DiemLuanVan");
            this.Property(t => t.HoiDongBaoVe).HasColumnName("HoiDongBaoVe");
            this.Property(t => t.NgayBaoVe).HasColumnName("NgayBaoVe");
            this.Property(t => t.GiaoVienHuongDan).HasColumnName("GiaoVienHuongDan");
            this.Property(t => t.DaTotNghiep).HasColumnName("DaTotNghiep");
            // Các quan hệ
            this.HasRequired(t => t.LopKhoaNganh)
                .WithMany(t => t.ListHocVien)
                .HasForeignKey(d => d.MaLopKhoaNganhGUID);

        }
    }
}
